package cn.exrick.xboot.base.service

import cn.exrick.xboot.base.dto.*
import cn.exrick.xboot.base.entity.SupervisionUser
import cn.exrick.xboot.base.vo.*
import cn.exrick.xboot.core.common.vo.PageVo
import cn.exrick.xboot.core.common.vo.Result
import com.baomidou.mybatisplus.extension.service.IService

/**
 * 监管部门用户接口
 * @author Fei
 */
interface ISupervisionUserService : IService<SupervisionUser?> {


    /**
     * 创建监管部门用户(管理系统)
     * @param supervisionUserDto 监管部门参数
     * @return 结果
     */
    fun createSupervisionUser(supervisionUserDto: SupervisionUserDto?): Result<Any?>?

    /**
     * 修改监管部门用户(管理系统)
     * @param supervisionUserDto 监管部门参数
     * @return 结果
     */
    fun updateSupervisionUser(supervisionUserDto: SupervisionUserDto?): Result<Any?>?

    /**
     * 移除监管部门用户(管理系统)
     * @param ids 监管部门用户id集合
     * @return 结果
     */
    fun removeSupervisionUser(ids: Array<out String>): Result<Any?>?

    /**
     * 获取监管部门用户列表(管理系统)
     * @param supervisionUserDto 监管部门参数
     * @return 结果
     */
    fun getSupervisionUserList(supervisionUserDto: SupervisionUserDto?, pageVo: PageVo?): Result<MutableMap<String, Any>>?

    /**
     * 禁用监管部门用户(管理系统)
     * @param id 监管部门id
     * @return 结果
     */
    fun forbiddenSupervisionUser(id: Array<out String>): Result<Any?>?

    /**
     * 获取当前登录人的用户等级
     * @return 用户等级
     */
    fun currentUserLevel(): Int?

    /**
     * 获取统计的监管部门信息接受员
     */
    fun getSupervisionMessageByArea(): Result<List<UserCommonVo>>?


    /**
     * 监管部门添加安全顾问(管理系统)
     */
    fun createSecurityAdvisor(securityAdvisorDto: SecurityAdvisorDto?): Result<Any?>?

    /**
     * 监管部门修改安全顾问(管理系统) && 安全手机端修改个人信息(app)
     */
    fun updateSecurityAdvisor(securityAdvisorDto: SecurityAdvisorDto): Result<Any?>?

    /**
     * 监管部门移除安全顾问(管理系统)
     */
    fun removeSecurityAdvisor(ids: Array<out String>?): Result<Any?>?

    /**
     * 监管部门禁用安全顾问(管理系统)
     */
    fun forbiddenSecurityAdvisor(ids: Array<out String>?): Result<Any?>?

    /**
     * 监管部门(企业部门)获取安全顾问列表(管理系统)
     */
    fun securityAdvisorList(pageVo: PageVo): Result<MutableMap<String, Any?>?>?


    /**
     * 获取监管部门个人信息
     */
    fun getSupervisionInfo(): Result<SupervisionUserInfoVo?>?



    /*-------------------------------查询---------------------*/
    /**
     * 监管部门获取注册企业列表
     */
    fun getEnterpriseListByAreaId(enterpriseUserSearchDto: EnterpriseUserSearchDto, pageVo: PageVo?): Result<MutableMap<String, Any?>>?

    /**
     * 获取企业详情
     */
    fun getEnterpriseDetail(id: String?): Result<EnterpriseUserDetailVo?>?


    /**
     * 监管部门获取安全顾问列表
     */
    fun getSecurityAdvisorByAreaId(securityAdvisorSearchDto: SecurityAdvisorSearchDto, pageVo: PageVo?): Result<MutableMap<String, Any?>>?

    /**
     * 获取安全顾问详情
     */
    fun getSecurityAdvisorDetail(id: String?): Result<SecurityAdvisorDetailVo?>?



    /*-------------------------辅助查询----------------------*/

    /**
     * 查询同级别的监管部门
     */
    fun getSupervisionByLevel(userId: String): MutableList<SupervisionUser?>?


    /**
     * 获取同级别考试监督员
     */
    fun getSupervisionExamByLevel(areaId: String?) : Result<List<UserCommonVo>>?


    /**
     * 获取同级别的企业审核注册员
     */
    fun getSupervisionCheckByArea(areaId : String) : Result<List<UserCommonVo>>?

}